﻿using app.Common;
using HLVControl.Grid;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.EntityClient;
using System.Data.Objects.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace eService.BLL
{
    //PARTNERINFO
    public class ExcuteKHACHHANG
    {
        eServiceEntities dbEntities;
        IExecuteData<PARTNERINFO> Execute;
        public string ErrMsg { get; set; }
        public bool KQ { get; set; }

        public ExcuteKHACHHANG()
        {
            dbEntities = ConnectionProvider.getDbEntities();
            Execute = new ExecuteData<PARTNERINFO>(dbEntities);
        }

        public List<PARTNERINFO> GetAll()
        {
            List<PARTNERINFO>  list = (List<PARTNERINFO>)Execute.GetAll().Where(c => c.TypePartner == 0).ToList();
            if (list != null && list.Count>0) KQ = true;
            return list;
        }

        public PARTNERINFO GetByID(int ID)
        {
            PARTNERINFO u = Execute.GetById(ID);
            if (u == null)
                return null;
            else KQ = true;
            return u;
        }
        public void Add(PARTNERINFO newObj)
        {
            KQ = false;
            if (newObj != null)
            {
                newObj.TypePartner = 0;
                KQ = Execute.Insert(newObj);
                if (KQ)
                    ErrMsg = "Thêm khách hàng mới thành công!";
                else
                    ErrMsg = "Không thể thêm khách hàng mới!";
            }
            else
            {
                ErrMsg = "Vui lòng nhập thông tin đầy đủ!";
            }
        }
        public bool UpDate(PARTNERINFO Obj)
        {
            KQ = false;
            if (Obj != null)
            {
                PARTNERINFO obj1 = dbEntities.PARTNERINFOes.Find(Obj.PartnerID);
                if (obj1 != null)
                {
                    KQ = Execute.Update(Obj, obj1);
                    if (KQ)
                        ErrMsg = "Cập nhật khách hàng thành công!";
                    else
                        ErrMsg = "Không thể Cập nhật khách hàng!";
                }
            }
            else
            {
                ErrMsg = "Vui lòng chọn khách hàng!";
            }
            return KQ;
        }
        public bool Delete(PARTNERINFO Obj)
        {
            KQ = false;
            if (Obj != null)
            {
                PARTNERINFO obj = dbEntities.PARTNERINFOes.Find(Obj.PartnerID);
                KQ = Execute.Delete(obj);
                if (KQ)
                    ErrMsg = "Xóa khách hàng thành công!";
                else
                    ErrMsg = "Không thể xóa khách hàng!";
            }
            else
            {
                ErrMsg = "Vui lòng chọn khách hàng!";
            }
            return KQ;
        }
        public PARTNERINFO LoadValues(int Ma, string Ten, string DiaChi, string Phone, string Fax, string Email, double PromoteTime, double PromoteAll,bool KhachVip)
        {
            KQ = false;
            PARTNERINFO obj = new PARTNERINFO();
            if (Ten != "")
            {
                obj.PartnerID = Ma;
                obj.TypePartner = 0;
                obj.Name = Ten;
                obj.Address = DiaChi;
                obj.Phone = Phone;
                obj.Fax = Fax;
                obj.Email = Email;
                obj.PromoteTime = PromoteTime;
                obj.PromoteAll = PromoteAll;
                obj.IsVIP = KhachVip;
                KQ = true;
            }
            else
            {
                obj = null;
                ErrMsg = "Vui lòng điền tên khách hàng!";
            }
            return obj;
        }
        public DataTable ToDataTable(List<PARTNERINFO> list)
        {
            DataTable dtData = Execute.ToDataTable<PARTNERINFO>(list);
            return dtData;
        }
        public bool LoadToTreeview(TreeListView treeview, List<PARTNERINFO> list)
        {
            KQ = false;
            DataTable dtData = Execute.ToDataTable<PARTNERINFO>(list);
            KQ = Execute.FillDataToTreeView(dtData, treeview);
            if (!KQ)
                ErrMsg = "Không thể tải khách hàng!";
            return KQ;
        }

    }
}
